// 在此处写vuex相关内容
import Vue from 'vue';
import Vuex from 'vuex';
// 声明使用插件
Vue.use(Vuex);

// 用来存放公共数据 相当于组件data
const state = {
    num:0
}
// getter 包含的是计算数据的对象
const getters = {
    // 判断num是奇数还是偶数
    evenOrOdd(){
        return state.num % 2 == 1 ?"奇数":"偶数"
    }

}
// mutations 直接更改state数据的方法
const mutations = {
    // 第一个参数：state  参数2：commit触发mutations当中的add传递过来的参数
   /*  add(state,str){
        console.log(state);
        console.log(str);
        state.num +=1;
    } */
    add(state,{name1,name2}){
        console.log(state);
        // console.log(str);
        console.log(name1,name2);
        state.num +=1;
    } ,
   /*  add(state){
        console.log(state);
        // console.log(str);
        state.num +=1;
    } , */
    /* jian(state){
        state.num -= 1;
    }  */
    jian(state,{count}){
        state.num -= count*1;
    }
}
// actions 间接更改state数据的方法 触发mutations进行更改
const actions = {
    oddAdd({state,commit},{name1,name2}){
        console.log(name1,name2);
        // 判断是否是奇数 如果是奇数 调用mutations add 如果不是算了
        // 1. 组件中如何调用actions当中的方法 dispatch
        // 2. actions当中的方法如何调用mutations的方法 commit
        if(state.num % 2 == 1){
            // state.num +=1;
            // 调用的是mutations
            // console.log('这是奇数')
            commit('add',{name1,name2});
        }

    },
    evenJian({state,commit},{count}){
        if(state.num % 2 == 0){
            commit('jian',{count})
        }
    }
}

// 暴露store对象
export default new Vuex.Store({
    state,
    getters,
    mutations,
    actions
})